#pragma once
#include <QTabWidget>
#include <QMap>
#include "diagram.h"

/*! \class workspace
    \brief Класс рабочей области (окружения)
*/
class workspace :
	public QWidget	 
{
	Q_OBJECT

private:
    QTabWidget *tabMaster;			//!< Браузер диаграмм
    QMap<int,diagram*> diagrams;	//!< Список открытых диаграмм, по индентификаторам
	QVector<int> tabs;				//!< Список идентификаторов открытых диаграм, в порядке расположения вкладок

public:	

	/*! Конструктор
	*/
	workspace(QWidget *parent = 0);

	~workspace(void);

	/*! Предоставляет доступ к виджету браузера
		\return Указатель на диаграм браузер
	*/
	inline QTabWidget *getTabMaster(){return tabMaster;}

	/*! Создает новую вкладку с заданной диаграммой
		\param  d Указатель на диаграмму
	*/
    void openDiagram(diagram *d);

	/*! Закрывает вкладку с заданным идентификатором диаграммы
		\param  diagram_id Идентификатор диаграммы
	*/
    void closeDiagram(int diagram_id);

	/*! Возвращает диаграмму на активной вкладке
		\return  Указатель на диаграмму
	*/
    diagram *activeDiagram();

	/*! Очищает рабочее пространство
	*/
	void clear();

	/*! Устанавливает масштаб отображения диаграммы
		\param value Масштаб
	*/
	void setScale(int value);
	
	/*! Возвращает масштаб отображения диаграммы
		\return  Масштаб
	*/
	inline int scale(){return 100;}//((QGraphicsView *)tabMaster->currentWidget())->matrix().m11()*100;}

public slots: 
	void closeTab(int);		//!< Обработчик закрытия вкладки
};
